Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add unmet water heater loads EMS program #1502

Open
wants to merge 111 commits into
base: master
Choose a base branch
from
Open

Conversation

jmaguire1
Copy link
Collaborator

@jmaguire1 jmaguire1 commented Oct 4, 2023

Pull Request Description

Add an EMS program for calculating unmet water heating loads. Focus is on unmet showers, but we can also calculate this for each end use if we wanted to. Addresses #1170.

Checklist

PR Author: Check these when they're done. Not all may apply. strikethrough and check any that do not apply.

PR Reviewer: Verify each has been completed.

  • Schematron validator (EPvalidator.xml) has been updated
  • Sample files have been added/updated (via tasks.rb)
  • Tests have been added/updated (e.g., HPXMLtoOpenStudio/tests and/or workflow/tests/hpxml_translator_test.rb)
  • Documentation has been updated
  • Changelog has been updated
  • openstudio tasks.rb update_measures has been run
  • No unexpected changes to simulation results of sample files

@jmaguire1 jmaguire1 changed the title Add unmet loads EMS program Add unmet water heater loads EMS program Oct 13, 2023
@shorowit shorowit mentioned this pull request Oct 17, 2023
13 tasks
@jmaguire1
Copy link
Collaborator Author

Right now, this method calculates:

  • Unmet shower energy (mcpdelta T when T_delivered < 105 F)
  • Unmet shower time
  • Total shower time

Unmet shower energy I feel is the most complete metric, since it accounts for how far off from the desired temperature you are. However, no one really has a sense for if say 2 kWh of unmet showers is too many, so this way you can calculate the % of shower time where loads are unmet.

We could also add metrics related to ALL hot water usage, or all fixtures. We'd want to account for the different desired delivered temperature for appliances, but it wouldn't be hard to add metrics like Unmet Energy for all fixtures.

@jmaguire1 jmaguire1 mentioned this pull request Nov 1, 2023
7 tasks
Copy link
Contributor

@shorowit shorowit left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some comments while I think of it. Addressing these comments will make it easier to pull in the master branch.

HPXMLtoOpenStudio/measure.rb Outdated Show resolved Hide resolved
HPXMLtoOpenStudio/resources/hotwater_appliances.rb Outdated Show resolved Hide resolved
@jmaguire1
Copy link
Collaborator Author

@shorowit: I just did a major refactor of this, no more duplicate code. Thanks for the suggestions. It'd be good to know if you think this is a decent way to organize things at a minimum if/when you have a chance to take a look, we're looking to use this with the 120 V HPWH relatively soon.

@shorowit shorowit added the enhancement New feature or request label Jan 13, 2024
@joseph-robertson joseph-robertson self-assigned this Oct 1, 2024
@jmaguire1
Copy link
Collaborator Author

I know one of the questions here was why we're not seeing unmet loads if we just drop the tank size to 1 gal, and I think I know why.

If we have a 1 gal WH but 4.5 kW elements, we basically have a small tankless water heater. Pretty much like the under sink units you see some manufacturers make, and the reason the "very small" UEF bin exists. So something like these: https://www.rheem.com/group/rheem-tankless-electric-water-heaters-professional-classic-series-tankless-electric-rtex-3-5-rtex-06-kw/

These units can support flow rates up ~ 1 gal/min, depending on mains. Here's an example from those spec sheets (the number is element capacity in kW):
image

Even with stochastic events but hourly timesteps, you might end up with low enough flow rates that the "tankless" water heater we use for testing can keep up with the loads. So I think it's not actually unexpected that we might not see unmet loads if you just reduce the tank volume, depending on what the draw profile looks like. From our "base-dhw-undersized", here's the fixture flow rate in gal/min:

image

So a test case with 1 gal but 4.5 kW elements might actually keep up with the shower draws, and we'd get 0 unmet loads. I think it's much better for our test cases to just use small elements/burners, rather than small tanks. But to make sure this works right, Joe helped make a new test file that has a 1 gal tank and 4.5 kW elements. With hourly timesteps/events, that still produces 0 unmet loads, but with 10 minute timesteps/events you do see a tiny bit of unmet loads (one hour). So we DO now have a test case for this if we want to make sure both situations will lead to unmet loads.

@jmaguire1
Copy link
Collaborator Author

@shorowit: the other big outstanding question here was splitting out SSB from fixtures, since this is sensitive to shower flow rates. I'd vote that we not do that for now, but we could consider it in the future. I'm actually curious what feedback we get about this feature, since there's no real standard way to quantify unmet WH loads, and if people agree with me that we really should just focus on showers.

@shorowit shorowit modified the milestones: 1.9.0, 1.10.0 Nov 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request priority low
Projects
Status: In progress
Development

Successfully merging this pull request may close these issues.

3 participants